﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AAA.Meta.Quote.Data;

namespace AAA.Meta.Quote
{
    public class BarRecordComparer : IComparer<BarRecord>
    {
        private List<SortItem> _lstSortItem;

        public BarRecordComparer()
        {
            _lstSortItem = new List<SortItem>();
        }

        public void AddSortItem(SortItem sortItem)
        {
            if (_lstSortItem.IndexOf(sortItem) > -1)
                return;

            if (sortItem.ItemName == null)
                return;

            _lstSortItem.Add(sortItem);
        }

        public void RemoveSortItem(SortItem sortItem)
        {
            _lstSortItem.Remove(sortItem);
        }

        public List<SortItem> GetSortItem()
        {
            return _lstSortItem;
        }

        #region IComparer<BarRecord> 成員

        public int Compare(BarRecord x, BarRecord y)
        {
            int iCompareValue = 0;

            if (x == null || y == null)
                return iCompareValue;

            if (_lstSortItem == null)
                return iCompareValue;

            for (int i = 0; i < _lstSortItem.Count; i++)
            {
                try
                {
                    if (_lstSortItem[i] == null)
                        continue;
                    if (_lstSortItem[i].ItemName == null)
                        continue;                    

                    iCompareValue = x[_lstSortItem[i].ItemName].CompareTo(y[_lstSortItem[i].ItemName]) * _lstSortItem[i].OrderDirection;

                    if (iCompareValue != 0)
                        return iCompareValue;
                }
                catch(Exception ex)
                {
                    throw;
                }
            }

            return iCompareValue;
        }

        #endregion
    }
}
